require "import"
import "java.text.SimpleDateFormat"
import "java.util.Date"
import "android.content.Context"
import "android.content.Intent"
import "android.content.IntentFilter"
import "android.os.BatteryManager"
import "android.os.Environment"
import "android.os.StatFs"
import "android.provider.Settings"
import "android.os.Build"
import "android.bluetooth.BluetoothAdapter"
import "android.location.LocationManager"

-- Get current time
local formattedTime = SimpleDateFormat("hh:mm a").format(Date())

-- Get current date
local formattedDate = SimpleDateFormat("MMMM dd, yyyy").format(Date())

-- Get battery level
local batteryIntent = this.registerReceiver(nil, IntentFilter(Intent.ACTION_BATTERY_CHANGED))
local level = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1)
local scale = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, -1)
local batteryPercent = (level / scale) * 100

-- Get battery health
local health = batteryIntent.getIntExtra(BatteryManager.EXTRA_HEALTH, -1)
local batteryHealth = "không xác định."
if health == BatteryManager.BATTERY_HEALTH_GOOD then
    batteryHealth = "tốt."
elseif health == BatteryManager.BATTERY_HEALTH_OVERHEAT then
    batteryHealth = "quá nóng."
elseif health == BatteryManager.BATTERY_HEALTH_DEAD then
    batteryHealth = "đã hỏng."
elseif health == BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE then
    batteryHealth = "quá điện áp."
elseif health == BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE then
    batteryHealth = "lỗi không xác định."
elseif health == BatteryManager.BATTERY_HEALTH_COLD then
    batteryHealth = "lạnh."
end

-- Get charging status
local status = batteryIntent.getIntExtra(BatteryManager.EXTRA_STATUS, -1)
local isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING or status == BatteryManager.BATTERY_STATUS_FULL

-- Get available storage
local storage = Environment.getExternalStorageDirectory()
local stat = StatFs(storage.getPath())
local availableBytes = stat.getAvailableBytes()
local availableGB = availableBytes / (1024^3)

-- Get current temperature
local temperature = batteryIntent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 0) / 10

-- Get screen brightness
local brightness = Settings.System.getInt(this.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS)
local brightnessPercent = (brightness / 255) * 100

-- Get memory card status
local isMemoryCardInserted = Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED

-- Get device name
local deviceName = Build.MODEL

-- Get Bluetooth status
local bluetoothAdapter = BluetoothAdapter.getDefaultAdapter()
local bluetoothStatus = bluetoothAdapter and (bluetoothAdapter.isEnabled() and "đang bật" or "đang tắt") or "không khả dụng"

-- Get network connection status
local connectivityManager = this.getSystemService(Context.CONNECTIVITY_SERVICE)
local activeNetworkInfo = connectivityManager.getActiveNetworkInfo()
local isConnected = activeNetworkInfo and activeNetworkInfo.isConnected
local internetStatus = isConnected and "đã kết nối" or "đã ngắt kết nối"

-- Get Airplane mode status
local isAirplaneModeOn = Settings.System.getInt(this.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 0) == 1
local airplaneModeStatus = isAirplaneModeOn and "đang bật" or "đang tắt"

-- Get Location status
local locationManager = this.getSystemService(Context.LOCATION_SERVICE)
local isLocationEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)
local locationStatus = isLocationEnabled and "đang bật" or "đang tắt"

-- Create and speak the message
local chargingStatusMessage = isCharging and "Device is charging." or "Device is not charging."

local message = "bây giờ là " .. formattedTime ..
                ". hôm nay là:" .. formattedDate ..
                ".mức pin hiện tại" .. string.format("%.0f", batteryPercent) .. "%." ..
                ". tình trạng pin " .. batteryHealth ..
                (isCharging and "đang sạc." or "không sạc.") ..
                ".bộ nhớ đã sử dụng: " .. string.format("%.2f", availableGB) .. " GB" ..
                ". nhiệt độ hiện tại: " .. temperature .. "°C" ..
                ".độ sáng màn hình: " .. string.format("%.0f", brightnessPercent) .. "%" ..
                ", thẻ nhớ: " .. (isMemoryCardInserted and "có hỗ trợ. " or "không hỗ trợ.") ..
                "tên thiết bị: " .. deviceName ..
                ".Bluetooth: " .. bluetoothStatus ..
                ".trạng thái mạng: " .. internetStatus ..
                ". chế độ máy bay " .. airplaneModeStatus ..
                ". vị trí " .. locationStatus

this.speak(message)
return true